package com.gr.experimental.model.impl.distr.operations;

import com.gr.experimental.model.impl.distr.Context;

public interface Function {

	public abstract String getName();

	public abstract Class<?> getReturnType();

	public abstract Class<?>[] getParameterTypes();

	public abstract Object invoke(Context ctx, Object[] parameters) throws FunctionCallException;

	/**
	 * Designates the functions that require an implicit context argument
	 * as their first parameter.
	 * @return
	 */
	public abstract boolean isContextDependent();
}